#include "log.hpp"
#include "TcpServer.hpp"
#include "Protocol.hpp"
#include <iostream>
#include <memory>

//手写版本的序列化和反序列化测试
// int main()
// {
//     //测试Response
//     Response resp(1000, 0);
//     std::string content;
//     resp.Serialize(&content);
//     std::string package = Encode(content);
//     std::cout << package << std::endl;

//     std::string tcontent;
//     Decode(package, &tcontent);
//     Response temp;
//     temp.Deserialize(tcontent);
//     std::cout << "result:" << temp._result << "  code:" << temp._code << std::endl;

//     //测试Request
//     // Request req(123, 456, '+');
//     // std::string content;
//     // req.Serialize(&content);
//     // std::string package = Encode(content);
//     // std::cout << "报文: " << package << std::endl;

//     // bool ret = Decode(package, &content);
//     // Request temp;
//     // temp.Deserialize(content);
//     // std::cout << temp._x + temp._y << std::endl;

//     return 0;
// }

//Josn版本测试
#include <jsoncpp/json/json.h>

int main()
{
    //形成数据
    Json::Value root;
    root["x"] = 10;
    root["y"] = 20;
    root["op"] = "+";
    root["dect"] = "this is a + oper";

    //序列化
    Json::FastWriter w;
    std::string res = w.write(root);

    //反序列化
    Json::Value v;
    Json::Reader r;
    r.parse(res, v);

    //提取数据
    int x = v["x"].asInt();
    int y = v["y"].asInt();
    std::string op = v["op"].asString();
    std::string dect = v["dect"].asString();


    return 0;
}